package jp.co.menox.tmserver.searchform;

/**
 * 検索条件の授受用formの基底クラス<br />
 * 一覧リスト用にページング関連情報を記述した。
 * @author
 *
 */
public abstract class TmServerSearchFormBase {

    // **** slim3仕様と検索formのやり方がそぐわない部分の補正
    //   検索formを使うのは、なるべくBeanUtil#copy()で入力値の一括取得するため。
    //   TODOF: 多分、jspのtag定義を追加するのが正しいのだろう。

    /** 初期値Trueにするための設定値：チェックボックスでcheckedを制御するためのインチキ定数 */
    protected final String FLAG_STRING = "__$$INITIAL_TRUE$$__";
    
    
    // **** ページング用設定

    /** 表示対象ページ */
    protected int currentPage = 1;
    /** 検索結果全レコード数：　検索後に設定すること */
    protected int maximumNumber;
    /** ページあたりのレコード数　TODO: 設定値は適当。ここで外出しか？画面入力で可変にするか？ */
    protected int numberInPage = 10;

    /**
     * 最大ページ番号を取得する
     * @return
     */
    public int getMaximumPageNumber() {
        if (this.maximumNumber == 0) {
            return 0;
        }
        
        int maximumPageNumber = this.maximumNumber / this.numberInPage;
        maximumPageNumber += ((this.maximumNumber % this.numberInPage) == 0)? 0: 1;
        return maximumPageNumber;
    }

    /**
     * 対象ページの先頭レコード番号を取得する
     * @return
     */
    public int getStartNumberInPage() {
        return (this.currentPage - 1) * this.numberInPage + 1;
    }

    /**
     * 対象ページの終了レコード番号を取得する
     * @return
     */
    public int getEndNumberInPage() {
        int endNumber = this.getStartNumberInPage() + this.numberInPage - 1;
        if (endNumber > this.maximumNumber) {
            endNumber = this.maximumNumber;
        }
        return endNumber;
    }
    

    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getMaximumNumber() {
        return maximumNumber;
    }
    public void setMaximumNumber(int maximumNumber) {
        this.maximumNumber = maximumNumber;
    }

    public int getNumberInPage() {
        return numberInPage;
    }
    public void setNumberInPage(int numberInPage) {
        if (numberInPage == 0) {
            return;
        }
        this.numberInPage = numberInPage;
    }

}
